package com.wanggy.mystore.service;

import com.wanggy.mystore.entity.User;

/**
 * 用户模块业务接口
 */
public interface IUserService {
    /**
     * 用户注册方法
     *
     * @param user 用户的数据对象
     */
    void reg(User user);

    /**
     * 用户登录方法
     *
     * @param username 用户名
     * @param password 用户密码
     * @return 当前匹配的用户数据，如果没有则返回hull
     */
    User login(String username, String password);


    /**
     * 修改用户密码
     * 1.要先看持久层需要什么参数：uid, password, modifiedUser, modifiedTime
     * 2.在更新数据之前需要根据uid查这个数据存不存在，uid可以通过控制层传递
     * 3.新密码需要有
     * 4.修改时间不需要参数列表，之间在方法内部new Date()即可
     * 5.旧密码需要有
     *
     * @param uid         用户的id
     * @param username    用户名
     * @param oldPassword 旧密码
     * @param newPassword 新密码
     */
    void changePassword(Integer uid, String username, String oldPassword, String newPassword);

    /**
     * 根据用户的uid查询用户数据（前端需要返回查询的用户数据）
     *
     * @param uid 用户uid
     * @return 用户数据
     */
    User getByUid(Integer uid);

    /**
     * 通过用户uid,修改用户的数据
     *
     * @param uid  用户的uid
     * @param user 需要修改的user数据
     */
    void changeInfo(Integer uid, User user);


    /**
     * 修改用户头头像
     * @param uid 用户uid
     * @param avatar 用户头像的路径
     * @param username 用户名称
     */
    void changeAvatar(Integer uid, String avatar, String username);
}
